package br.com.vestibulation.backbean;

import br.com.vestibulation.bean.Usuario;
import br.com.vestibulation.dao.UsuarioDAO;
import java.util.ArrayList;
import javax.faces.application.FacesMessage;
import javax.faces.bean.*;
import javax.faces.context.FacesContext;
import org.primefaces.event.RowEditEvent;

@ManagedBean(name="usuarioBackBean")
@SessionScoped
public class UsuarioBackBean {
    private ArrayList<Usuario> listaUsuarios;
    private Usuario usuario;
    
    public UsuarioBackBean(){
        UsuarioDAO dao = new UsuarioDAO();
        usuario = new Usuario();
        listaUsuarios = dao.listarUsuarios();
    }

    public Usuario getUsuario(){
        return usuario;
    }

    public void setAluno(Usuario usuario) {
        this.usuario = usuario;
    }

    public ArrayList<Usuario> getListaUsuarios() {
        return listaUsuarios;
    }

    public void setListaUsuarios(ArrayList<Usuario> listaUsuarios) {
        this.listaUsuarios = listaUsuarios;
    }

    public String adicionarUsuario(Usuario usuarioLogado){
        String retorno = null;
        UsuarioDAO dao = new UsuarioDAO();        
        if(dao.cadastrarUsuario(usuario)){
            retorno = "Sucesso";
        } else{
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Erro no cadastro.", "Tente novamente mais tarde."));
        }
        usuarioLogado.setUsuario(usuario.getUsuario());
        usuarioLogado.setSenha(usuario.getSenha());
        usuarioLogado.setSexo(usuario.getSexo());
        usuarioLogado.setNome(usuario.getNome());
        usuario = new Usuario();
        listaUsuarios = dao.listarUsuarios();
        return retorno;
    }
    
    public String excluir(Usuario usuario){
        UsuarioDAO dao = new UsuarioDAO();
        dao.excluirUsuario(usuario.getUsuario());
        listaUsuarios = dao.listarUsuarios();
        FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("Usuário excluído com sucesso."));
        return null;
    }

    public void alterarUsuario(RowEditEvent event){
        UsuarioDAO dao = new UsuarioDAO();
        usuario = (Usuario) event.getObject();
        if(usuario.getUsuario().equals("") || usuario.getNome().equals("")){
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Campo usuário/nome não pode ser vazio.", "Tente novamente."));
        } else if(dao.updateUsuario(usuario)){
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("Alteração realizada com sucesso!"));            
        } else{
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Erro na alteração.", "Tente novamente mais tarde."));
        }
        usuario = new Usuario();
        listaUsuarios = dao.listarUsuarios();
    }

    public String editarPerfil(Usuario usuarioLogado){
        UsuarioDAO dao = new UsuarioDAO();
        if(dao.editarPerfil(usuarioLogado)){
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("Perfil alterado com sucesso!"));
            listaUsuarios = dao.listarUsuarios();
        } else{
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Erro na alteração.", "Tente novamente mais tarde."));
        }
        return null;
    }

    public String converterStringSexo(String sexo){
        if(sexo.equals("m")){
            sexo = "Masculino";
        } else if(sexo.equals("f")){
            sexo = "Feminino";
        } else{
            sexo = "Desconhecido";
        }
        return sexo;
    }

}